home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / jnos / psi110f / mailbox.h < prev    next >
C/C++ Source or Header  |  1994-05-26  |  12KB  |  306 lines

  1. #ifndef _MAILBOX_H
  2. #define _MAILBOX_H
  3. /* Defines for the ax.25 mailbox facility */
  4.   
  5. #ifndef _SMTP_H
  6. #include "smtp.h"
  7. #endif
  8.   
  9. #ifndef _TIMER_H
  10. #include "timer.h"
  11. #endif
  12.   
  13. #ifndef _AX25_h
  14. #include "ax25.h"
  15. #endif
  16.   
  17. #ifndef _CONFIG_H
  18. #include "config.h"
  19. #endif
  20.   
  21. #ifndef _TIPMAIL_H
  22. #include "tipmail.h"
  23. #endif
  24.   
  25. #ifndef _INDEX_H
  26. #include "index.h"
  27. #endif
  28.   
  29. /* a mailbox entry */
  30. struct let {
  31.     long    start;
  32.     long    size;
  33.     int     status;
  34. #ifdef USERLOG
  35.     long    msgid;
  36. #endif
  37. };
  38.   
  39. #define MAXPWDLEN 30
  40. #define MBXLINE 128         /* max length of line */
  41. #define MBXNAME 20          /* max length of user name */
  42. #define CNAMELEN 10         /* max lenght of convers names */
  43. #define AREALEN 64
  44.   
  45. struct mbx {
  46.     struct mbx *next;       /* next one on list */
  47.     int state ;             /* mailbox state */
  48. #define MBX_LOGIN       0               /* trying to log in */
  49. #define MBX_CMD         1               /* in command mode */
  50. #define MBX_SUBJ        2               /* waiting for a subject line */
  51. #define MBX_DATA        3               /* collecting the message */
  52. #define MBX_REVFWD      4               /* reverse forwarding in progress */
  53. #define MBX_TRYING      5               /* pending forwarding connection */
  54. #define MBX_FORWARD     6               /* established forwarding connection */
  55. #define MBX_GATEWAY 7       /* gatewaying somewhere */
  56. #define MBX_READ    8       /* reading a message */
  57. #define MBX_UPLOAD  9       /* uploading a file */
  58. #define MBX_DOWNLOAD 10     /* downloading a file */
  59. #define MBX_CONVERS 11      /* Using convers mode */
  60. #define MBX_CHAT    12      /* Chatting with sysop */
  61. #define MBX_WHAT    13      /* Listing files */
  62. #define MBX_SYSOPTRY 14     /* Trying sysop */
  63. #define MBX_SYSOP   15      /* Is sysop */
  64. #define MBX_XMODEM_RX 16    /* receiving xmodem */
  65. #define MBX_XMODEM_TX 17    /* sending xmodem */
  66.     int family;             /* Type of incoming connection */
  67.     char name[MBXNAME+1];   /* Name of remote station */
  68.     char call[AXALEN];      /* User call in shifted form, if applicable*/
  69. #ifdef USERLOG
  70.     char *username;         /* User's name from registration */
  71.     char *homebbs;          /* User's homebbs address */
  72.     char *IPemail;          /* User's email address */
  73.     long last;              /* Time of last login */
  74. #endif
  75. #ifdef MAILCMDS
  76.     char *to ;          /* To-address in form user or user@host */
  77.     char *origto ;                  /* Original To-address, if rewritten */
  78.     char *tofrom ;                  /* Optional <from in to-address */
  79.     char *origbbs ;         /* Original bbs, if tracing R: lines */
  80.     char *tomsgid ;         /* Optional $msgid in to-address */
  81.     char *subject ;         /* Message subject */
  82.     char *date ;            /* Date of the message */
  83.     FILE *mfile;            /* Used during reverse forwarding */
  84.     FILE *tfile ;           /* Temporary file for message, or */
  85.                             /* forwarding script file. */
  86.     FILE *tfp;              /* Temporary file when reading R: headers */
  87. #endif
  88.     char line[MBXLINE+1] ;  /* Room for null at end */
  89.     int sid ;               /* Characteristics indicated by the SID */
  90.                             /* banner of the attaching station.  If */
  91.                             /* no SID was sent, this is zero.  If an */
  92.                             /* SID of any kind was received, it is */
  93.                             /* assumed that the station supports */
  94.                             /* abbreviated mail forwarding mode. */
  95. #define MBX_SID         0x01    /* Got any SID */
  96. #define MBX_RLI_SID     0x02    /* This is an RLI BBS, disconnect after F> */
  97. #define MBX_HIER_SID    0x04    /* The BBS supports hierarchical routing */
  98. #define MBX_EXPERT  0x08        /* expert user status */
  99. #define MBX_AREA    0x10        /* show area in prompt */
  100. #define MBX_NRID    0x20        /* use netrom ident */
  101. #define MBX_LL      0x80        /* LAN-LINK system */
  102. #define MBX_MID     0x0100      /* BBS supports MID's */
  103. #define MBX_FBB     0x0200      /* F6FBB bbs */
  104. #define MBX_REPLYADDR 0x0400    /* Include a 'Reply-to:' line in mail */
  105.     char stype ;            /* BBS send command type (B,P,T, etc.) */
  106.     int type ;              /* Type of session when invoking "chat" */
  107.     int user;               /* User linkage area */
  108.     struct proc *proc;      /* My process */
  109.     char escape;            /* Escape character */
  110.     long privs;             /* Privileges (taken from Ftpusers file) */
  111. #define FTP_READ        1L       /* Read files */
  112. #define FTP_CREATE      2L       /* Create new files */
  113. #define FTP_WRITE       4L       /* Overwrite or delete existing files */
  114. #define AX25_CMD        8L       /* AX.25 gateway operation allowed */
  115. #define TELNET_CMD      16L      /* Telnet gateway operation allowed */
  116. #define NETROM_CMD      32L      /* NET/ROM gateway operation allowed */
  117. #define SYSOP_CMD       64L      /* Remote sysop access allowed */
  118. #define EXCLUDED_CMD    128L     /* This user is banned from the BBS */
  119. /* 256 and 512 are used in PPP*/
  120. #define NO_SENDCMD      1024L    /* Disallow send command */
  121. #define NO_READCMD      2048L    /* Disallow read command */
  122. #define NO_3PARTY       4096L    /* Disallow third-party mail */
  123. #define IS_BBS          8192L    /* This user is a bbs */
  124. #define IS_EXPERT       16384L   /* This user is an expert */
  125. #define NO_CONVERS      32768L   /* Disallow convers command */
  126. #define NO_ESCAPE       65536L   /* Default is no escape */
  127. #define NO_LISTS        131072L  /* No lists displayed from mailbox */
  128. #define NO_LINKEDTO     262144L  /* No '*** LINKED TO' allowed */
  129.   
  130.     char *path;             /* Directory path */
  131.     char *startmsg;         /* Message to be sent at connect */
  132. #ifdef MAILCMDS
  133.     long mboxsize;          /* size of mailbox when opened */
  134.     int mycnt;              /* number of msgs in my private mailbox */
  135.     struct let *mbox;
  136.     int current;            /* the current message number */
  137.     int nmsgs;              /* number of messages in this mail box */
  138.     int newmsgs;            /* number of new messages in mail box */
  139.     int change;             /* mail file changed */
  140.     int anyread;            /* true if any message has been read */
  141.     char area[AREALEN+1];          /* name of current mail area */
  142.     int areatype;           /* is the current mail area private or public ? */
  143. #define USER    0           /* Sysop checking other personal areas */
  144. #define PRIVATE 1
  145. #define AREA    2
  146.     int lockcnt;        /* of associated mbox */
  147. #endif
  148.     int morerows;           /* Number of lines before -more- prompt */
  149. /* Next two are used by userlog code - WG7J */
  150. #ifdef USERLOG
  151.     long lastread;          /* number of last read message in area */
  152.     long newlastread;       /* id of new last listed message in area */
  153. #endif
  154. #ifdef MAILCMDS
  155.     char *stdinbuf;         /* the stdio buffer for the mail file */
  156.     char *stdoutbuf;        /* the stdio file io buffer for the temp file */
  157. #endif
  158. #ifdef TIPSERVER
  159.     struct tipcb *tip;       /* tip structure if tip mail incoming */
  160. #endif
  161. } ;
  162. #define         NULLMBX         (struct mbx *)0
  163.   
  164. /* Structure used for automatic flushing of gateway sockets */
  165. struct gwalarm {
  166.     int s1;
  167.     int s2;
  168.     struct timer t;
  169. };
  170.   
  171. #ifdef MBFWD
  172. /* A forward entry */
  173. struct fwd {
  174.     struct mbx *m;
  175.     char bid[15];
  176.     struct mailindex ind;
  177. };
  178. #endif
  179.   
  180. #define MSG_MODIFY  0
  181. #define MSG_READ    1
  182.   
  183. struct alias {
  184.     struct alias *next;
  185.     char *name;
  186.     char *cmd;
  187. };
  188. extern struct alias *AliasList;
  189.   
  190. struct alias *findalias(char *cmd);
  191. struct alias *findalias(char *cmd);
  192. int dombalias(int argc,char *argv[],void *p);
  193. int doaliases(int argc,char *argv[],void *p);
  194.   
  195. /* In converse.c */
  196. extern void mbox_converse(struct mbx *m,int channel);
  197. extern int ShowConfLinks __ARGS((int s,int full));
  198. extern int ShowConfUsers __ARGS((int s,int quick,char *name));
  199.   
  200. /* In mailbox.c */
  201. extern char Noperm[];
  202. extern char Nosock[];
  203. extern char Mbpasswd[];
  204. extern char MboxId[];
  205. extern char Badmsg[];
  206. extern char Nomail[];
  207. extern char Mbnrid[];
  208. extern char Mbwarning[];
  209. extern char Howtoend[];
  210. extern char MsgAborted[];
  211. extern char *Mtmsg;
  212.   
  213. extern struct mbx *Mbox;
  214. extern void (*Listusers) __ARGS((int s));
  215.   
  216. extern int ThirdParty;
  217. extern int Mtrace;
  218. extern int MbRegister;
  219. extern int MAttended;
  220. extern int Mbloophold;
  221. extern int NoBid;
  222. extern int Mbnewmail;
  223. extern int Usenrid;
  224. extern int MBSecure;
  225. extern int Mbsendquery;
  226.   
  227. extern int32 Mbtdiscinit;
  228. extern unsigned Tiptimeout;
  229.   
  230. int dombescape __ARGS((int argc,char *argv[],void *p));
  231. int mbxrecvline __ARGS((struct mbx *m));
  232. int gw_connect __ARGS((struct mbx *m,int s,struct sockaddr *fsocket,int len));
  233.   
  234. void mbx_incom __ARGS((int s,void *t,void *p));
  235. int domboxdisplay __ARGS((int argc,char *argv[],void *p));
  236. struct mbx *newmbx __ARGS((void));
  237. void exitbbs __ARGS((struct mbx *m));
  238. int domboxbye __ARGS((int argc,char *argv[],void *p));
  239. int mbx_parse __ARGS((struct mbx *m));
  240. void changearea __ARGS((struct mbx *m,char *area));
  241. char *rewrite_address __ARGS((char *addr));
  242. void listusers __ARGS((int s));
  243. void putprompt __ARGS((struct mbx *m));
  244. int doxmodem __ARGS((char mode,char *filename,void *p));
  245. int uuencode __ARGS((FILE *infile,int s,char *infilename));
  246. int dombtelnet __ARGS((int argc,char *argv[],void *p));
  247. int dombports __ARGS((int argc,char *argv[],void *p));
  248.   
  249. /* in mboxcmd.c */
  250. int dombuserinfo __ARGS((int argc,char *argv[],void *p));
  251. void loguser __ARGS((struct mbx *m));
  252. void setmbnrid __ARGS((void));
  253. void updatedefaults __ARGS((struct mbx *));
  254. char *cmd_line __ARGS((int argc,char *argv[],char stype));
  255. void listnewmail(struct mbx *m,int silent);
  256.   
  257. /* In forward.c: */
  258. int dorevfwd __ARGS((int argc,char *argv[],void *p));
  259. int dombtimer __ARGS((int argc,char *argv[],void *p));
  260. int dombkick __ARGS((int argc,char *argv[],void *p));
  261.   
  262. int dombconnect __ARGS((int argc,char *argv[],void *p));
  263. int dombconvers __ARGS((int argc,char *argv[],void *p));
  264. int dodownload __ARGS((int argc,char *argv[],void *p));
  265. int dombupload __ARGS((int argc,char *argv[],void *p));
  266. int dowhat __ARGS((int argc,char *argv[],void *p));
  267. int dozap __ARGS((int argc,char *argv[],void *p));
  268. int dosend __ARGS((int argc,char *argv[],void *p));
  269. int dosid __ARGS((int argc,char *argv[],void *p));
  270. int dosysop __ARGS((int argc,char *argv[],void *p));
  271. int dostars __ARGS((int argc,char *argv[],void *p));
  272. int dombhelp __ARGS((int argc,char *argv[],void *p));
  273. int dombiproute __ARGS((int argc,char *argv[],void *p));
  274. int dombtelnet __ARGS((int argc,char *argv[],void *p));
  275. int dombfinger __ARGS((int argc,char *argv[],void *p));
  276. int dombexpert __ARGS((int argc,char *argv[],void *p));
  277. int dombjheard __ARGS((int argc,char *argv[],void *p));
  278. int dombmovemail __ARGS((int argc,char *argv[],void *p));
  279. void gw_alarm __ARGS((void *p));
  280. void gw_input __ARGS((int s,void *notused,void *p));
  281. void gw_superv __ARGS((int null,void *proc,void *p));
  282. int mbx_to __ARGS((int argc,char *argv[],void *p));
  283. int mbx_data __ARGS((struct mbx *m,struct list *cclist,char *extra));
  284. int msgidcheck __ARGS((char *string));
  285. int thirdparty __ARGS((struct mbx *m));
  286. int dombsemicolon __ARGS((int argc,char *argv[],void *p));
  287. int dombping __ARGS((int argc,char *argv[],void *p));
  288. int dombnrnodes __ARGS((int argc,char *argv[],void *p));
  289. int donrneighbour __ARGS((int argc,char *argv[],void *p));
  290. int dombnrneighbour __ARGS((int argc,char *argv[],void *p));
  291. int doarea __ARGS((int argc,char *argv[],void *p));
  292. int doregister  __ARGS((int argc,char *argv[],void *p));
  293. int dombusers __ARGS((int argc,char *argv[],void *p));
  294. int dombpast __ARGS((int argc,char *argv[],void *p));
  295. int dombstatus __ARGS((int argc,char *argv[],void *p));
  296. int dombmailstats __ARGS((int argc,char *argv[],void *p));
  297. int doipheard __ARGS((int argc,char *argv[],void *p));
  298. int dombipheard __ARGS((int argc,char *argv[],void *p));
  299. int mbx_getname __ARGS((struct mbx *m));
  300. int dochat __ARGS((int argc,char *argv[],void *p));
  301.   
  302. void eout(char *s);
  303.   
  304. #endif  /* _MAILBOX_H */
  305.   
  306.